package com.tmxk.api.day05.gull.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 *  注解 : Java程序的定义的一种标注, 注释标注, jdk本身提供的一些默认标注(注解),后期结合其他框架应用会使用更多;
 *  通常程序员开发时很少写自定义注解,但多少会写一点
 * 自定义注解关键字: @interface
 * 注: 和 interface 接口关键字 是两个不同概念
 * 常识: 在注解头部又标注使用的注解 叫 元注解
 * 元注解: @Target 标记这个注解应该是哪种 Java 成员( 类、接口、字段、方法、参数 等 )
 *        @Retention 标识这个注解怎么保存，是只在代码中(SOURCE)，还是编入class文件中(CLASS)，或者是在运行时可以通过反射访问(RUNTIME)。
 */
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    // 自定义注解中定义的成员,如通常只有一个值, 成员变量名定义为  value
    String[] value() default "hello";
}
